package br.com.foxinline.servico;

import br.com.foxinline.modelo.Ato;
import br.com.foxinline.modelo.Emolumento;
import br.com.foxinline.modelo.EmolumentoItem;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;


/**
 *
 * @author cadomeireles
 */
@Stateless
public class EmolumentoItemServico extends ServicoGenerico<EmolumentoItem> {
    
    public EmolumentoItemServico() {
        super(EmolumentoItem.class);
    }

    public EmolumentoItem pesquisar(Ato ato) {
        
        String sql = "select item from Emolumento emolumento join emolumento.emolumentoItem item where emolumento.ativo = true";

        if (ato != null && ato.getId() != null) {
            sql += " and item.atoItem = :ato";
        }

        Query query = getEntityManager().createQuery(sql);
        if (ato != null && ato.getId() != null) {
            query.setParameter("ato", ato);
        }
        return (EmolumentoItem) query.getSingleResult();
    }

    public EmolumentoItem pesquisar(Ato ato, BigDecimal valor) {
        
        String sql = "select item from Emolumento emolumento join emolumento.emolumentoItem item where emolumento.ativo = true";

        if (ato != null && ato.getId() != null) {
            sql += " and item.atoItem = :ato";
        }
        
        if (valor != null) {
            sql += " and :valor between item.valorInicial and item.valorFinal";
        }

        Query query = getEntityManager().createQuery(sql);

        if (ato != null && ato.getId() != null) {
            query.setParameter("ato", ato);
        }
        if (valor != null) {
            query.setParameter("valor", valor);
        }

        return (EmolumentoItem) query.getSingleResult();
    }
    
    public List<EmolumentoItem> pesquisar(Emolumento emolumento) {
    
        String sql = "select item from Emolumento emolumento join emolumento.emolumentoItem item";
        
        if (emolumento != null && emolumento.getId() != null) {
            sql += " where emolumento = :emolumento";
        }
     
        Query query = getEntityManager().createQuery(sql);

        if (emolumento != null && emolumento.getId() != null) {
            query.setParameter("emolumento", emolumento);
        }
 
        return query.getResultList();
    }
    
}
